﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using MGI.AccesoDatos.DataTypes;
using ComunesMGI.DataTypes;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;

namespace MGI.AccesoDatos.AccesoBD
{
    class BDSistemas
    {
        public List<DataSistemaBD> getSistemasBD(DataCliente cliente)
        { 
            string nombre = "";
            int codigo = 0;
            List<DataSistemaBD> listaSistemas = new List<DataSistemaBD>();
            string textoConexion = ConfigurationManager.AppSettings.Get("stringConection");
            SqlConnection cnn = new SqlConnection(textoConexion);

            string consulta = "getSistemas ";
            SqlCommand cmd = new SqlCommand(consulta, cnn);
            cmd.CommandType = CommandType.StoredProcedure;
            SqlParameter par = new SqlParameter("@CliCod", cliente.Codigo);
            cmd.Parameters.Add(par);
            SqlDataReader lector;
            try
            {
                cnn.Open();
                lector = cmd.ExecuteReader();

                while (lector.Read())
                {
                    nombre = (string)lector["SisNom"];
                    codigo = (int)lector["SisCod"];
                    DataSistemaBD sistema = new DataSistemaBD(codigo, nombre);
                    listaSistemas.Add(sistema);
                }
            }
            catch (Exception ex)
            {
                throw new ApplicationException("Problemas con la base de datos: " + ex.Message);
            }
            finally
            {
                cnn.Close();
            }
            return listaSistemas;
        }

        public int getCodigoSistema(DataCliente cliente, DataSistema sistema)
        {
            int codigo = 0;
            string textoConexion = ConfigurationManager.AppSettings.Get("stringConection");
            SqlConnection cnn = new SqlConnection(textoConexion);

            string consulta = "getCodigoSistema";
            SqlCommand cmd = new SqlCommand(consulta, cnn);
            cmd.CommandType = CommandType.StoredProcedure;
            SqlParameter par1 = new SqlParameter("@CliCod", cliente.Codigo);
            SqlParameter par2 = new SqlParameter("@SisNom", sistema.Nombre);
            cmd.Parameters.Add(par1);
            cmd.Parameters.Add(par2);
            SqlDataReader lector;
            try
            {

                cnn.Open();
                lector = cmd.ExecuteReader();

                if (lector.Read())
                {
                    codigo = (int)lector["SisCod"];


                }
                else
                {
                    throw new Exception("No existe el sistema de nombre: " + sistema.Nombre);
                }

            }
            catch (Exception ex)
            {
                throw new ApplicationException("Problemas con la base de datos: " + ex.Message);
            }
            finally
            {
                cnn.Close();
            }
            return codigo;
        }
    }
}
